using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataManagementTools._Raster._MosaicDataset
{
    /// <summary>
    /// <para>Build Seamlines</para>
    /// <para>Generate or update seamlines for your mosaic dataset. Seamlines are used to sort overlapping imagery and produce a smoother-looking mosaic.</para>
    /// <para>生成或更新镶嵌数据集的接缝线。接缝线用于对重叠图像进行排序，并生成看起来更平滑的马赛克。</para>
    /// </summary>    
    [DisplayName("Build Seamlines")]
    public class BuildSeamlines : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public BuildSeamlines()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_mosaic_dataset">
        /// <para>Mosaic Dataset</para>
        /// <para>Select the mosaic dataset on which to build seamlines.</para>
        /// <para>选择要在其上构建接缝线的镶嵌数据集。</para>
        /// </param>
        public BuildSeamlines(object _in_mosaic_dataset)
        {
            this._in_mosaic_dataset = _in_mosaic_dataset;
        }
        public override string ToolboxName => "Data Management Tools";

        public override string ToolName => "Build Seamlines";

        public override string CallName => "management.BuildSeamlines";

        public override List<string> AcceptEnvironments => ["parallelProcessingFactor"];

        public override object[] ParameterInfo => [_in_mosaic_dataset, _cell_size, _sort_method.GetGPValue(), _sort_order.GetGPValue(), _order_by_attribute, _order_by_base_value, _view_point, _computation_method.GetGPValue(), _blend_width, _blend_type.GetGPValue(), _request_size, _request_size_type.GetGPValue(), _blend_width_units.GetGPValue(), _area_of_interest, _where_clause, _update_existing.GetGPValue(), _out_mosaic_dataset, _min_region_size, _min_thinness_ratio, _max_sliver_size];

        /// <summary>
        /// <para>Mosaic Dataset</para>
        /// <para>Select the mosaic dataset on which to build seamlines.</para>
        /// <para>选择要在其上构建接缝线的镶嵌数据集。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Mosaic Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_mosaic_dataset { get; set; }


        /// <summary>
        /// <para>Cell Size</para>
        /// <para><xdoc>
        ///   <para>Generate seamlines for raster datasets that fall within the following range of spatial resolutions.</para>
        ///   <para>You can leave this parameter empty and the tool will automatically create seamlines at the appropriate levels.</para>
        ///   <para>The units for this parameter are the same as the spatial reference of the input mosaic dataset.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>为属于以下空间分辨率范围的栅格数据集生成接缝线。</para>
        ///   <para>您可以将此参数留空，该工具将自动创建相应级别的接缝线。</para>
        ///   <para>此参数的单位与输入镶嵌数据集的空间参考相同。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Cell Size")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _cell_size { get; set; } = null;


        /// <summary>
        /// <para>Sort Method</para>
        /// <para><xdoc>
        ///   <para>Set a rule to determine which raster will be used to generate seamlines when images overlap.</para>
        ///   <bulletList>
        ///     <bullet_item>Northwest— Select the raster datasets that have center points closest to the northwest corner of the boundary. This is the default.</bullet_item><para/>
        ///     <bullet_item>Closest to viewpoint— Select raster datasets based on a user-defined location and a nadir location for the raster datasets using the Viewpoint tool.</bullet_item><para/>
        ///     <bullet_item>By attribute— Select raster datasets based on an attribute from the footprint attribute table. Commonly used attributes include acquisition date, cloud cover, or viewing angle.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>设置规则以确定在影像重叠时将使用哪个栅格生成接缝线。</para>
        ///   <bulletList>
        ///     <bullet_item>西北 - 选择中心点最靠近边界西北角的栅格数据集。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>最接近视点 - 使用视点工具根据用户定义的位置和栅格数据集的最低点位置选择栅格数据集。</bullet_item><para/>
        ///     <bullet_item>按属性 - 根据覆盖线属性表中的属性选择栅格数据集。常用属性包括采集日期、云量或视角。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Sort Method")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _sort_method_value _sort_method { get; set; } = _sort_method_value._NORTH_WEST;

        public enum _sort_method_value
        {
            /// <summary>
            /// <para>Northwest</para>
            /// <para>Northwest— Select the raster datasets that have center points closest to the northwest corner of the boundary. This is the default.</para>
            /// <para>西北 - 选择中心点最靠近边界西北角的栅格数据集。这是默认设置。</para>
            /// </summary>
            [Description("Northwest")]
            [GPEnumValue("NORTH_WEST")]
            _NORTH_WEST,

            /// <summary>
            /// <para>Closest to viewpoint</para>
            /// <para>Closest to viewpoint— Select raster datasets based on a user-defined location and a nadir location for the raster datasets using the Viewpoint tool.</para>
            /// <para>最接近视点 - 使用视点工具根据用户定义的位置和栅格数据集的最低点位置选择栅格数据集。</para>
            /// </summary>
            [Description("Closest to viewpoint")]
            [GPEnumValue("CLOSEST_TO_VIEWPOINT")]
            _CLOSEST_TO_VIEWPOINT,

            /// <summary>
            /// <para>By attribute</para>
            /// <para>By attribute— Select raster datasets based on an attribute from the footprint attribute table. Commonly used attributes include acquisition date, cloud cover, or viewing angle.</para>
            /// <para>按属性 - 根据覆盖线属性表中的属性选择栅格数据集。常用属性包括采集日期、云量或视角。</para>
            /// </summary>
            [Description("By attribute")]
            [GPEnumValue("BY_ATTRIBUTE")]
            _BY_ATTRIBUTE,

        }

        /// <summary>
        /// <para>Sort Ascending</para>
        /// <para><xdoc>
        ///   <para>Sort the raster datasets in ascending or descending order.
        ///   <bulletList>
        ///     <bullet_item>Checked—Sort the rasters in ascending order. This is the default.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Sort the rasters in descending order.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>按升序或降序对栅格数据集进行排序。
        ///   <bulletList>
        ///     <bullet_item>选中 - 按升序对栅格进行排序。这是默认设置。 </bullet_item><para/>
        ///     <bullet_item>未选中 - 按降序对栅格进行排序。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Sort Ascending")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _sort_order_value _sort_order { get; set; } = _sort_order_value._true;

        public enum _sort_order_value
        {
            /// <summary>
            /// <para>ASCENDING</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ASCENDING")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>DESCENDING</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("DESCENDING")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Sort Attribute</para>
        /// <para>Order the raster datasets based on this field when the sort method is By Attribute. The default attribute is ObjectID.</para>
        /// <para>当排序方法为按属性时，基于此字段对栅格数据集进行排序。默认属性为 ObjectID。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Sort Attribute")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _order_by_attribute { get; set; } = null;


        /// <summary>
        /// <para>Sort Base Value</para>
        /// <para>Sort the rasters by their difference between this value and their value in the Sort Attribute parameter.</para>
        /// <para>按栅格与排序属性参数中的值之间的差值对栅格进行排序。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Sort Base Value")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _order_by_base_value { get; set; } = null;


        /// <summary>
        /// <para>View Point</para>
        /// <para>Set the coordinate location to use when Sort Method is Closest to viewpoint.</para>
        /// <para>设置“排序方法”（Sort Method） 为“最接近视点”（Nearest to viewpoint） 时要使用的坐标位置。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("View Point")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _view_point { get; set; } = null;


        /// <summary>
        /// <para>Computation Method</para>
        /// <para><xdoc>
        ///   <para>Choose how to build seamlines.</para>
        ///   <bulletList>
        ///     <bullet_item>Geometry—Generate seamlines for overlapping areas based on the intersection of footprints. Areas with no overlapping imagery will merge the footprints. This is the default.</bullet_item><para/>
        ///     <bullet_item>Radiometry—Generate seamlines based on the spectral patterns of features within the imagery.</bullet_item><para/>
        ///     <bullet_item>Copy footprint—Generate seamlines directly from the footprints.</bullet_item><para/>
        ///     <bullet_item>Copy to sibling—Apply the seamlines from another mosaic dataset. The mosaic datasets have to be in the same group. For example, the extent of the panchromatic band does not always match the extent of the multispectral band. This option makes sure they share the same seamline.</bullet_item><para/>
        ///     <bullet_item>Edge detection—Generate seamlines over intersecting areas based on the edges of features in the area.</bullet_item><para/>
        ///     <bullet_item>Voronoi—Generate seamlines using the area Voronoi diagram.</bullet_item><para/>
        ///     <bullet_item>Disparity—Generate seamlines based on the disparity images of stereo pairs. This method can avoid seamlines cutting through buildings.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>The Sort Method parameter applies to each computation method.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>选择如何构建接缝线。</para>
        ///   <bulletList>
        ///     <bullet_item>几何 （Geometry） - 根据覆盖线的交点生成重叠区域的接缝线。没有重叠影像的区域将合并足迹。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>辐射测量 - 根据影像中要素的光谱模式生成接缝线。</bullet_item><para/>
        ///     <bullet_item>复制封装 （Copy footprint） - 直接从封装生成接缝线。</bullet_item><para/>
        ///     <bullet_item>复制至同级 - 应用另一个镶嵌数据集中的接缝线。镶嵌数据集必须位于同一组中。例如，全色波段的范围并不总是与多光谱波段的范围相匹配。此选项可确保它们共享相同的接缝线。</bullet_item><para/>
        ///     <bullet_item>边检测 - 根据区域中要素的边在相交区域上生成接缝线。</bullet_item><para/>
        ///     <bullet_item>Voronoi - 使用面积 Voronoi 逻辑图生成接缝线。</bullet_item><para/>
        ///     <bullet_item>视差 （Disparity） - 基于立体对的视差影像生成接缝线。这种方法可以避免接缝线穿过建筑物。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>Sort Method 参数适用于每种计算方法。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Computation Method")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _computation_method_value _computation_method { get; set; } = _computation_method_value._RADIOMETRY;

        public enum _computation_method_value
        {
            /// <summary>
            /// <para>Geometry</para>
            /// <para>Geometry—Generate seamlines for overlapping areas based on the intersection of footprints. Areas with no overlapping imagery will merge the footprints. This is the default.</para>
            /// <para>几何 （Geometry） - 根据覆盖线的交点生成重叠区域的接缝线。没有重叠影像的区域将合并足迹。这是默认设置。</para>
            /// </summary>
            [Description("Geometry")]
            [GPEnumValue("GEOMETRY")]
            _GEOMETRY,

            /// <summary>
            /// <para>Radiometry</para>
            /// <para>Radiometry—Generate seamlines based on the spectral patterns of features within the imagery.</para>
            /// <para>辐射测量 - 根据影像中要素的光谱模式生成接缝线。</para>
            /// </summary>
            [Description("Radiometry")]
            [GPEnumValue("RADIOMETRY")]
            _RADIOMETRY,

            /// <summary>
            /// <para>Copy footprint</para>
            /// <para>Copy footprint—Generate seamlines directly from the footprints.</para>
            /// <para>复制封装 （Copy footprint） - 直接从封装生成接缝线。</para>
            /// </summary>
            [Description("Copy footprint")]
            [GPEnumValue("COPY_FOOTPRINT")]
            _COPY_FOOTPRINT,

            /// <summary>
            /// <para>Copy to sibling</para>
            /// <para>Copy to sibling—Apply the seamlines from another mosaic dataset. The mosaic datasets have to be in the same group. For example, the extent of the panchromatic band does not always match the extent of the multispectral band. This option makes sure they share the same seamline.</para>
            /// <para>复制至同级 - 应用另一个镶嵌数据集中的接缝线。镶嵌数据集必须位于同一组中。例如，全色波段的范围并不总是与多光谱波段的范围相匹配。此选项可确保它们共享相同的接缝线。</para>
            /// </summary>
            [Description("Copy to sibling")]
            [GPEnumValue("COPY_TO_SIBLING")]
            _COPY_TO_SIBLING,

            /// <summary>
            /// <para>Edge detection</para>
            /// <para>Edge detection—Generate seamlines over intersecting areas based on the edges of features in the area.</para>
            /// <para>边检测 - 根据区域中要素的边在相交区域上生成接缝线。</para>
            /// </summary>
            [Description("Edge detection")]
            [GPEnumValue("EDGE_DETECTION")]
            _EDGE_DETECTION,

            /// <summary>
            /// <para>Voronoi</para>
            /// <para>Voronoi—Generate seamlines using the area Voronoi diagram.</para>
            /// <para>Voronoi - 使用面积 Voronoi 逻辑图生成接缝线。</para>
            /// </summary>
            [Description("Voronoi")]
            [GPEnumValue("VORONOI")]
            _VORONOI,

            /// <summary>
            /// <para>Disparity</para>
            /// <para>Disparity—Generate seamlines based on the disparity images of stereo pairs. This method can avoid seamlines cutting through buildings.</para>
            /// <para>视差 （Disparity） - 基于立体对的视差影像生成接缝线。这种方法可以避免接缝线穿过建筑物。</para>
            /// </summary>
            [Description("Disparity")]
            [GPEnumValue("DISPARITY")]
            _DISPARITY,

        }

        /// <summary>
        /// <para>Blend Width</para>
        /// <para><xdoc>
        ///   <para>Blending (feathering) occurs along a seamline between pixels where there are overlapping rasters. The blend width defines how many pixels will be blended.</para>
        ///   <para>If the blend width value is 10, and you use Both as the blend type, then 5 pixels will be blended on the inside and outside of the seamline. If the value is 10, and the blend type is Inside, then 10 pixels will be blended on the inside of the seamline.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>混合（羽化）发生在像素之间的接缝线上，其中有重叠的栅格。混合宽度定义了要混合的像素数。</para>
        ///   <para>如果混合宽度值为 10，并且您使用 Both 作为混合类型，则将在接缝线的内侧和外侧混合 5 个像素。如果值为 10，并且混合类型为 Inside，则 10 像素将在接缝线的内侧混合。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Blend Width")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double? _blend_width { get; set; } = null;


        /// <summary>
        /// <para>Blend Type</para>
        /// <para><xdoc>
        ///   <para>Determine how to blend one image into another, over the seamlines. Options are to blend inside the seamlines, outside the seamlines, or both inside and outside.</para>
        ///   <bulletList>
        ///     <bullet_item>Both— Blend using pixels on either side of the seamlines. For example, if the Blend Width is 10 pixels, then five pixels will be blended on the inside and outside of the seamline. This is the default.</bullet_item><para/>
        ///     <bullet_item>Inside—Blend inside of the seamline.</bullet_item><para/>
        ///     <bullet_item>Outside—Blend outside of the seamline.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>确定如何在接缝线上将一个图像混合到另一个图像中。选项是混合在接缝线内、接缝线外或内侧和外侧。</para>
        ///   <bulletList>
        ///     <bullet_item>两者 （Both） - 在接缝线的任一侧使用像素进行混合。例如，如果“混合宽度”为 10 像素，则将在接缝线的内侧和外侧混合 5 个像素。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>内部 （Inside） - 在接缝线内部混合。</bullet_item><para/>
        ///     <bullet_item>外部 （Outside） - 在接缝线外部混合。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Blend Type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _blend_type_value _blend_type { get; set; } = _blend_type_value._BOTH;

        public enum _blend_type_value
        {
            /// <summary>
            /// <para>Both</para>
            /// <para>Both— Blend using pixels on either side of the seamlines. For example, if the Blend Width is 10 pixels, then five pixels will be blended on the inside and outside of the seamline. This is the default.</para>
            /// <para>两者 （Both） - 在接缝线的任一侧使用像素进行混合。例如，如果“混合宽度”为 10 像素，则将在接缝线的内侧和外侧混合 5 个像素。这是默认设置。</para>
            /// </summary>
            [Description("Both")]
            [GPEnumValue("BOTH")]
            _BOTH,

            /// <summary>
            /// <para>Inside</para>
            /// <para>Inside—Blend inside of the seamline.</para>
            /// <para>内部 （Inside） - 在接缝线内部混合。</para>
            /// </summary>
            [Description("Inside")]
            [GPEnumValue("INSIDE")]
            _INSIDE,

            /// <summary>
            /// <para>Outside</para>
            /// <para>Outside—Blend outside of the seamline.</para>
            /// <para>外部 （Outside） - 在接缝线外部混合。</para>
            /// </summary>
            [Description("Outside")]
            [GPEnumValue("OUTSIDE")]
            _OUTSIDE,

        }

        /// <summary>
        /// <para>Request Size</para>
        /// <para>Specify the number of columns and rows for resampling. The maximum value is 5,000. Increase or decrease this value based on the complexity of your raster data. Greater image resolution provides more detail in the raster dataset but also increases the processing time.</para>
        /// <para>指定用于重采样的列数和行数。最大值为 5,000。根据栅格数据的复杂度增大或减小此值。更高的图像分辨率可在栅格数据集中提供更多细节，但也会增加处理时间。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Request Size")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public long _request_size { get; set; } = 1000;


        /// <summary>
        /// <para>Request Size Type</para>
        /// <para><xdoc>
        ///   <para>Set the units for the Request Size.</para>
        ///   <bulletList>
        ///     <bullet_item>Pixels—Modify the request size based on the pixel size.This is the default option and resamples the closest image based on the raster pixel size.</bullet_item><para/>
        ///     <bullet_item>Pixel scaling factor—Modify the request size by specifying a scaling factor. This option resamples the closest image by multiplying the raster pixel size (from cell size level table) with the pixel size factor.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>设置请求大小的单位。</para>
        ///   <bulletList>
        ///     <bullet_item>像素 - 根据像素大小修改请求大小。这是默认选项，可根据栅格像素大小对最接近的图像进行重新采样。</bullet_item><para/>
        ///     <bullet_item>像素缩放因子 - 通过指定缩放因子来修改请求大小。此选项通过将栅格像素大小（来自像元大小级别表）乘以像素大小因子来对最接近的图像进行重采样。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Request Size Type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _request_size_type_value _request_size_type { get; set; } = _request_size_type_value._PIXELS;

        public enum _request_size_type_value
        {
            /// <summary>
            /// <para>Pixels</para>
            /// <para>Pixels—Modify the request size based on the pixel size.This is the default option and resamples the closest image based on the raster pixel size.</para>
            /// <para>像素 - 根据像素大小修改请求大小。这是默认选项，可根据栅格像素大小对最接近的图像进行重新采样。</para>
            /// </summary>
            [Description("Pixels")]
            [GPEnumValue("PIXELS")]
            _PIXELS,

            /// <summary>
            /// <para>Pixel scaling factor</para>
            /// <para>Pixel scaling factor—Modify the request size by specifying a scaling factor. This option resamples the closest image by multiplying the raster pixel size (from cell size level table) with the pixel size factor.</para>
            /// <para>像素缩放因子 - 通过指定缩放因子来修改请求大小。此选项通过将栅格像素大小（来自像元大小级别表）乘以像素大小因子来对最接近的图像进行重采样。</para>
            /// </summary>
            [Description("Pixel scaling factor")]
            [GPEnumValue("PIXELSIZE_FACTOR")]
            _PIXELSIZE_FACTOR,

        }

        /// <summary>
        /// <para>Blend Width Units</para>
        /// <para><xdoc>
        ///   <para>Specify the unit of measurement for blend width.</para>
        ///   <bulletList>
        ///     <bullet_item>Pixels—Measure using the number of pixels. This is the default.</bullet_item><para/>
        ///     <bullet_item>Ground units—Measure using the same units as the mosaic dataset.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定混合宽度的度量单位。</para>
        ///   <bulletList>
        ///     <bullet_item>像素 - 使用像素数进行测量。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>地面单位 - 使用与镶嵌数据集相同的单位进行测量。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Blend Width Units")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _blend_width_units_value _blend_width_units { get; set; } = _blend_width_units_value._PIXELS;

        public enum _blend_width_units_value
        {
            /// <summary>
            /// <para>Pixels</para>
            /// <para>Pixels—Measure using the number of pixels. This is the default.</para>
            /// <para>像素 - 使用像素数进行测量。这是默认设置。</para>
            /// </summary>
            [Description("Pixels")]
            [GPEnumValue("PIXELS")]
            _PIXELS,

            /// <summary>
            /// <para>Ground units</para>
            /// <para>Ground units—Measure using the same units as the mosaic dataset.</para>
            /// <para>地面单位 - 使用与镶嵌数据集相同的单位进行测量。</para>
            /// </summary>
            [Description("Ground units")]
            [GPEnumValue("GROUND_UNITS")]
            _GROUND_UNITS,

        }

        /// <summary>
        /// <para>Area of Interest</para>
        /// <para>Build seamlines on all the rasters that intersect this polygon. To specify an area of interest, browse to a feature class, or create a polygon graphic on the display.</para>
        /// <para>在与此面相交的所有栅格上构建接缝线。要指定感兴趣区域，请浏览至要素类，或在显示屏上创建面图形。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Area of Interest")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _area_of_interest { get; set; } = null;


        /// <summary>
        /// <para>Query Definition</para>
        /// <para>SQL expression to build seamlines on specific raster datasets within the mosaic dataset.</para>
        /// <para>用于在镶嵌数据集中的特定栅格数据集上构建接缝线的 SQL 表达式。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Query Definition")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _where_clause { get; set; } = null;


        /// <summary>
        /// <para>Update Existing Seamlines</para>
        /// <para><xdoc>
        ///   <para>Update seamlines that are affected by the addition or deletion of mosaic dataset items. This option is enabled only if seamlines were generated previously and it will use the existing sort method and sort order to generate seamlines.</para>
        ///   <bulletList>
        ///     <bullet_item>Unchecked—Regenerates seamlines for all items and ignores existing seamlines, if any. This is the default.</bullet_item><para/>
        ///     <bullet_item>Checked—Only update items without seamlines. If any new items overlap with the previously created seamlines, the existing seamlines may be affected.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>This parameter is disabled if seamlines do not exist.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>更新受添加或删除镶嵌数据集项目影响的接缝线。仅当之前生成了接缝线时，才会启用此选项，并且它将使用现有的排序方法和排序顺序来生成接缝线。</para>
        ///   <bulletList>
        ///     <bullet_item>未选中 - 再生所有项目的接缝线并忽略现有接缝线（如果有）。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>选中 - 仅更新不带接缝线的项目。如果任何新项目与先前创建的接缝线重叠，则现有接缝线可能会受到影响。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>如果接缝线不存在，则禁用此参数。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Update Existing Seamlines")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _update_existing_value _update_existing { get; set; } = _update_existing_value._false;

        public enum _update_existing_value
        {
            /// <summary>
            /// <para>UPDATE_EXISTING</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("UPDATE_EXISTING")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>IGNORE_EXISTING</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("IGNORE_EXISTING")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Updated Mosaic Dataset</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated Mosaic Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_mosaic_dataset { get; set; }


        /// <summary>
        /// <para>Minimum Region Size</para>
        /// <para><xdoc>
        ///   <para>Specify the minimum region size, in pixel units. Any polygons smaller than this specified threshold will be removed in the seamline result. The default is 100 pixels.</para>
        ///   <para>This parameter value should be smaller than the sliver area, which is defined as (Maximum Sliver Size) * (Maximum Sliver Size).</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定最小区域大小（以像素为单位）。任何小于此指定阈值的多边形都将在接缝线结果中删除。默认值为 100 像素。</para>
        ///   <para>此参数值应小于条子区域，该区域定义为（最大条子尺寸）* （最大条子尺寸）。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Minimum Region Size")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public long _min_region_size { get; set; } = 100;


        /// <summary>
        /// <para>Minimum Thinness Ratio</para>
        /// <para><xdoc>
        ///   <para>Define how thin a polygon can be, before it is considered a sliver. This is based on a scale from 0 to 1.0, where a value of 0.0 represents a polygon that is almost a straight line, and a value of 1.0 represents a polygon that is a circle.</para>
        ///   <para>Slivers are removed when building seamlines.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>定义多边形的细度，然后再将其视为条形。这基于从 0 到 1.0 的刻度，其中值 0.0 表示几乎是直线的多边形，值 1.0 表示圆的多边形。</para>
        ///   <para>在构建接缝线时会去除条子。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Minimum Thinness Ratio")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double _min_thinness_ratio { get; set; } = 0.05;


        /// <summary>
        /// <para>Maximum Sliver Size</para>
        /// <para><xdoc>
        ///   <para>Specify the maximum size a polygon can be to still be considered a sliver. This parameter is specified in pixels and is based on the Request Size, not the spatial resolution of the source raster. Any polygon that is less than the square of this value is considered a sliver. Any regions that are less than (Maximum Sliver Size)2 are considered slivers.</para>
        ///   <para>Slivers are removed when building seamlines.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定多边形仍可被视为条子的最大大小。此参数以像素为单位指定，并且基于请求大小，而不是源栅格的空间分辨率。任何小于此值的平方的多边形都被视为条形。任何小于（最大银片大小）2 的区域都被视为银片。</para>
        ///   <para>在构建接缝线时会去除条子。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Maximum Sliver Size")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public long _max_sliver_size { get; set; } = 20;


        public BuildSeamlines SetEnv(object parallelProcessingFactor = null)
        {
            base.SetEnv(parallelProcessingFactor: parallelProcessingFactor);
            return this;
        }

    }

}